SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[paEjecutarPasoTRAS]

@IdTramite INT,
@Reparticion INT,
@Usuario INT = NULL

AS
SET NOCOUNT ON
DECLARE @Error INT
SET @Error = 0
DECLARE @Tramite INT
DECLARE @IdTracking INT
DECLARE @Paso INT
DECLARE @TareaPosterior INT

BEGIN TRANSACTION

-- Obtengo el tracking que quiero actualizar
SELECT @Tramite = Tramite, @IdTracking = TR.IdTracking, @Paso = P.IdPaso, 
@TareaPosterior = T.Posterior FROM tb_Tracking TR
	INNER JOIN tb_Tareas T ON TR.Tarea = T.IdTarea
	INNER JOIN tb_Pasos P ON P.Tarea = T.IdTarea
	WHERE T.Tipo = 9 AND Tramite = @IdTramite AND TR.Estado = 4

-- Actualizo el tracking
UPDATE tb_Tracking SET Hasta = GETDATE(), Estado = 7 WHERE IdTracking = 
@IdTracking

SELECT @Error = @@ERROR

IF @Error <> 0 GOTO Salir

-- Inserto el tracking de pasos como correcto
INSERT INTO tb_TrackingDePasos (Tracking, Paso, VistoBueno, Observacion, 
Documento, Decision)
	VALUES(@IdTracking, @Paso, 'S', NULL, NULL, NULL)

SELECT @Error = @@ERROR

IF @Error <> 0 GOTO Salir

-- Inserto el tracking de la tarea posterior con Estado = En Traslado hasta que lo acepto el usuario destinatario
INSERT INTO tb_Tracking (Tramite, NroSubtramite, Tarea, Desde, 
FechaRecepcion, FechaActivacion, Hasta, ReparticionDestino, Responsable, 
Estado)
	VALUES(@Tramite, 0, @TareaPosterior, GETDATE(), NULL, NULL, NULL, 
@Reparticion, @Usuario, 2)

SELECT @Error = @@ERROR

IF @Error <> 0 GOTO Salir

Salir:

IF @Error = 0
	COMMIT TRANSACTION
ELSE
	ROLLBACK TRANSACTION
GO
GRANT EXECUTE ON  [dbo].[paEjecutarPasoTRAS] TO [GestionDeDocumentos]
GO
